import { request } from "@/utils/https";
/**
 * 订单数量统计接口返回数据类型
 */
export interface OrderCountResponse {
  /**
   * 全部订单数量
   */
  totalCount: number;

  /**
   * 待核销订单数量
   */
  pendingCount: number;

  /**
   * 已核销订单数量
   */
  verifiedCount: number;

  /**
   * 已取消订单数量
   */
  cancelledCount: number;
}

/**
 * 获取订单数量统计
 /shopOrder/count
 */
export const getOrderCount = () => {
  return request<ResponseData<OrderCountResponse>>(
    "/api/shopOrder/count",
    "GET",
    {},
    {},
  );
};

// 订单列表返回数据类型
export interface OrderListResponseData {
  /**
   * id
   */
  id: number;

  /**
   * 订单编号
   */
  orderNo: string;

  /**
   * 用户id
   */
  userId: number;

  /**
   * 用户名称
   */
  userName: string;

  /**
   * 用户头像
   */
  userAvatar: string;

  /**
   * 项目id
   */
  projectId: number;

  /**
   * 项目名称
   */
  projectName: string;

  /**
   * 项目封面图片
   */
  projectCoverImgUrl: string;

  /**
   * 产品id
   */
  productId: number;

  /**
   * 产品名称
   */
  productName: string;

  /**
   * 产品封面图片
   */
  productCoverImgUrl: string;

  /**
   * 订单总价
   */
  totalPrice: number;

  /**
   * 总次数
   */
  totalSessions: number;

  /**
   * 剩余次数
   */
  remainingSessions: number;

  /**
   * 已使用次数
   */
  usedSessions: number;

  /**
   * 订单状态：0-待支付，1-待核销(进行中)，2-已完成，3-已取消
   */
  status: number;

  /**
   * 订单状态描述
   */
  statusDesc: string;

  /**
   * 支付类型（0-现金支付，1-积分支付）
   */
  paymentType: number;

  /**
   * 支付类型描述
   */
  paymentTypeDesc: string;

  /**
   * 支付时间
   */
  paymentTime: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 更新时间
   */
  updateTime: string;
}

/**
 * 订单项数据结构
 */
export interface OrderItem {
  /**
   * 订单ID
   */
  id: number;

  /**
   * 订单编号
   */
  orderNo: string;

  /**
   * 产品名称
   */
  productName: string;

  /**
   * 产品封面图片
   */
  productCoverImgUrl: string;

  /**
   * 价格
   */
  price: number;

  /**
   * 支付方式
   */
  paymentMethod: string;

  /**
   * 订单状态（0-待核销，1-已核销，2-已取消）
   */
  status: number;

  /**
   * 订单状态描述
   */
  statusDesc: string;

  /**
   * 下单时间
   */
  createTime: string;
}

// 获取订单列表
export const getOrderList = (params: {
  pageNumber: number;
  pageSize: number;
  status?: number | null; // 0-待核销，1-已核销，2-已取消，null-全部
}) => {
  return request<ResponseData<OrderItem>>(
    "/api/shopOrder/order/list",
    "GET",
    params,
    {},
  );
};

// 取消订单
export const cancelOrder = (detailId: number) => {
  return request<ResponseData<any>>(
    `/api/shopOrder/appointment/cancel/${detailId}`,
    "POST",
    {},
    {},
  );
};
